$(document).ready(function(){
	var username_error = true;
	var username_invalid = true;
	var error_code = 0;
	if($("#error_info").css("visibility") == "hidden") {
		$("#error_info").hide();
	}
	/**
	 * 检验用户名是否已经被注册
	 */
	function usernameIsInvalid(){
		var invalid = true;
		$.ajax({
			url:'queryvalid',
			dataType:'text',
			type:'post',
			async:false,
			data:'param=' + $("#username").val() + '&type=' + 'username',
			success:function(data){
						if(data == 'N') {
							username_invalid = true;
							if(error_code == 0) {
								$("#error_info").css("visibility","visible");
								$("#error_info").text("该用户名已被注册，请注册其他用户名");
								$("#error_info").show();
								error_code = 1;
							}
						}
						else {
							username_invalid = false;
							invalid = false;
						}
		}});
		return invalid;
	}
	/**
	 * 检验用户名是否合乎命名规则和是否已经被注册
	 */
	function checkUsername(){
		var username = $("#username").val();
		var re = /[a-zA-Z0-9]{6,30}/;
		if(!re.test(username)) {
			if(error_code == 0) {
				$("#error_info").css("visibility","visible");
				$("#error_info").text("用户名输入不正确。");
				$("#error_info").show();
				error_code = 1;
			}
			username_error = true;
			return false;
		}
		else {
			username_error = false;
			return !usernameIsInvalid();
		}
	}
	/**
	 * 用户名输入框得到焦点的时候做的判断
	 */
	$("#username").focus(function(){
		if(username_error || username_invalid) {
			username_error = false;
			username_invalid = false;
			if(error_code == 1){
				$("#error_info").hide();
				error_code = 0;
			}
		}
	});
	$("#username").blur(checkUsername);
	/**
	 * error_code = 2 或 3 
	 */
	function checkPasswd() {
		var passwd = $("#passwd").val();
		var re = /[a-zA-Z0-9]{8,30}/;
		if(!re.test(passwd)) {
			if(error_code == 0) {
				$("#error_info").css("visibility","visible");
				$("#error_info").text("密码输入不正确。");
				$("#error_info").show();
				error_code = 2;
			}
			return false;
		}
		var confirm_passwd = $("#confirm_passwd").val();
		if(confirm_passwd != passwd) {
			if(error_code == 0) {
				$("#error_info").css("visibility","visible");
				$("#error_info").text("两次输入的密码不一致。");
				$("#error_info").show();
				error_code = 3;
			}
			return false;
		}
		return true;
	}
	$("#passwd").focus(function(){
		if(error_code == 2) {
			$("#error_info").hide();
			error_code = 0;
		}
	});
	$("#confirm_passwd").focus(function(){
		if(error_code == 3) {
			$("#error_info").hide();
			error_code = 0;
		}
	});
	function emailIsValid(){
		var isValid = true;
		$.ajax({
			url:'queryvalid',
			dataType:'text',
			type:'post',
			async:false,
			data:'param=' + $("#email").val() + '&type=' + 'email',
			success:function(data){
						if(data == 'N') {
							if(error_code == 0){
								$("#error_info").css("visibility","visible");
								$("#error_info").text("该邮箱已被注册，请注册其他邮箱");
								$("#error_info").show();
								error_code = 4;
							}
							isValid = false;
						}
		}});
		return isValid;
	}
	/**
	 * error_code = 4
	 */
	function checkEmail(){
		var email = $("#email").val();
		if (email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
			return emailIsValid();
		else {
			if(error_code == 0) {
				$("#error_info").css("visibility","visible");
				$("#error_info").text("邮箱输入不正确。");
				$("#error_info").show();
				error_code = 4;
			}
			return false;
		}
	}
	$("#email").blur(checkEmail);
	$("#email").focus(function(){
		if(error_code == 4) {
			$("#error_info").hide();
			error_code = 0;
		}
	});
	$("#checkcode").focus(function(){
		if(error_code == 5) {
			$("#error_info").hide();
			error_code = 0;
		}
	});
	/**
	 * error_code = 5
	 */
	function checkCheckCode() {
		if($("#checkcode").val().length < 4) {
			if(error_code == 0) {
				$("#error_info").css("visibility","visible");
				$("#error_info").text("验证码输入不正确。");
				$("#error_info").show();
				error_code = 5;
			}
			return false;
		}
		else 
			return true;
	}
	$("#submit").click(function(){
		return checkUsername()&&checkPasswd()&&checkEmail()&&checkCheckCode();
	});
});
